/*
 * Esta classe faz a conexão com o banco de dados 'postgresql'
 */
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * @author neto
 * @author diego
 * @author luiz
 */
public class Conexao {
    
    //METODOS ESTATICOS PODEM SER ACESSADOS SEM QUE A CLASSE SEJA INSTANCIADA
    
    /**
     * Metodo para chamar o metodo para abrir conexao.
     * @throws LocadoraDAOException
     */    
    public static Connection getConnection() throws LocadoraDAOException{
        try{
            Class.forName("org.postgresql.Driver");             //Driver do BD
            String bd= "jdbc:postgresql://localhost/locadorafilmes";  //Caminho para conexao
            String usr= "postgres";                             //Nome de usuario do BD
            String pswrd= "postgres";                           //Senha do bd
            return DriverManager.getConnection(bd, usr, pswrd); //Parametros da Conexao
        }catch (Exception e){
            throw new LocadoraDAOException(e.getMessage());
        }
    }

    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @param stat
     * @param rs
     * @throws LocadoraDAOException
     */
    public static void closeConnection(Connection conn, Statement stat, ResultSet rs) throws LocadoraDAOException{
        close(conn, stat, rs);
    }
    
    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @param stat
     * @throws LocadoraDAOException
     */

    public static void closeConnection(Connection conn, Statement stat) throws LocadoraDAOException{
        close(conn, stat, null);
    }
    
    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @throws LocadoraDAOException
     */

    public static void closeConnection(Connection conn) throws LocadoraDAOException{
        close(conn, null, null);
    }
    
    /**
     * Metodo chamado para chamar o metodo para fechar conexao.
     * @param conn
     * @param stat
     * @param rs
     * @throws LocadoraDAOException
     */

    private static void close(Connection conn, Statement stat, ResultSet rs) throws LocadoraDAOException{
        try{
            if(conn!= null) conn.close();
            if(stat!= null) stat.close();
            if(rs!= null) rs.close();
        }catch (Exception e){
            throw new LocadoraDAOException (e.getMessage());
        }
    }
    
}